﻿// 202 子集和I.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

/*
http://oj.daimayuan.top/course/22/problem/948

给你一个整数 n
，定义 f0=1
，对于所有的 i∈[1,2n)
，fi=∑j&i=j,j<ifj×imod1000000007
。请依次输出 f0,f1,...,f2n−1
。
  
输入格式
一行一个整数 n
。

输出格式
输出一行共 2n
 个整数表示答案。

样例输入
2
样例输出
1 1 2 12
数据规模
对于所有数据，保证 1≤n≤16
。
*/
#include <iostream>

using namespace std;

//枚举子集
const int P = 1000000007;
int n, f[100010];


void dfs(int limit,int curr) {
	if (curr ==0) return;
	f[limit] += f[curr];
	f[limit] %= P;
	dfs(limit, (curr - 1) & limit);
}


int main() {
	cin >> n;
	f[0] = 1;
	for (int i = 1; i < 1 << n; i++) {
		f[i] = 1;
		dfs(i, (i - 1) & i);
		f[i] = 1LL * f[i] * i % P;
	}

	for (int i = 0; i < 1 << n; i++)
		cout << f[i] << " ";
	cout << endl;

	return 0;
}

//int main()
//{
//	cin >> n;
//	f[0] = 1;
//	for (int i = 1; i < 1 << n; i++) {
//		f[i] = 1;
//		for (int j = (i - 1) & i; j; j = (j - 1) & i) {
//			f[i] += f[j], f[i] %= P;
//		}
//		f[i] = 1LL * f[i] * i % P;
//	}
//	for (int i = 0; i < 1 << n; i++)
//		cout << f[i] << " ";
//	cout << endl;
//
//	return 0;
//}
// 